package com.zy.集合.数组.不可变数组

object Test {

  def main(args: Array[String]): Unit = {

    // 1. 定义数组
    val arr1: Array[Int] = new Array[Int](5)
    println(arr1.mkString("Array(", ", ", ")"))

    // 可以调用Array伴生对象的apply方法构造数组，调用时可省略.apply方法体
    val arr2: Array[Int] = Array(1, 2, 3, 4)
    println(arr2.mkString("Array(", ", ", ")"))

    // 2. 访问数据
    println(arr2(0))

    // 3. 修改元素 不可变元素不能新增删除，但可以修改元素引用
    arr1(0) = 5 // 默认调用了Array对象的apply()
    // 方法 or update()方法
    arr1(1) = 4
    println(arr1.mkString("Array(", ", ", ")"))

    println("=================4===============")

    // 4. 循环遍历数组
    for (i <- arr1.indices) print(arr1(i) + " ")
    println
    for (e <- arr1) print(e + " ")
    println
    val iterator = arr1.iterator
    while (iterator.hasNext) {
      print(iterator.next() + " ")
    }
    println
    arr1.foreach(e => print(e + " "))
    println
    println(arr1.mkString("-"))

    println("================5=================")

    // 5. 添加元素 添加元素生成一个全新的数组
    val arr3: Array[Int] = arr1.:+(0) // 尾部加  简写：arr1 :+ 0
    println(arr3.mkString(" "))

    val arr4: Array[Int] = arr3.+:(6) // 前追加 简写：6 +: arr1    arr1 :+ 6
    println(arr4.mkString(" "))
  }

}
